package face;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.SpringLayout;

import model.Turma;
import repositorio.AlunoRepositorio;
import repositorio.TurmaRepositorio;
public class GridConceito {

	JPanel panel;
	JComboBox cbTurmas;
	JButton	btBuscar;
	JButton	btSalvar;
	JLabel label;
	JTable table;
	JScrollPane scroll;
	TurmaRepositorio turmaRepo;
	AlunoRepositorio alunoRepo;
	Turma turmaSelec;
	
	
	public GridConceito(){
		turmaRepo = new TurmaRepositorio();
		alunoRepo = new AlunoRepositorio();
	}
	
	
	public JComponent card()
	{	
		JPanel panel = new JPanel(false);
		panel.setLayout(new GridLayout(1, 1));
		
		panel.add(criarInterface());
		
		return panel;
		
	}
	
	
	private JComponent criarInterface(){

		SpringLayout  layout = new  SpringLayout();
		
		panel = new JPanel(false);
		panel.setLayout(layout);
		
		table = new JTable();
		table.setShowGrid(true);
		scroll = new JScrollPane(table);
		
		label = new JLabel("Turma: ");
		cbTurmas = new JComboBox(turmaRepo.buscarTodos().toArray());
		btBuscar = new JButton("Buscar");
		btBuscar.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) 
					{
						turmaSelec = (Turma) cbTurmas.getSelectedItem();
						table.setModel(turmaRepo.buscarConceitos(turmaSelec));
					}
				}
		);
		
		btSalvar = new JButton("Salvar");
		btSalvar.addActionListener(
				new ActionListener() {
					public void actionPerformed(ActionEvent e) 
					{
						salvarConceitos();
					}
				}
		);
        
		panel.add(label);
		panel.add(scroll);
		panel.add(cbTurmas);
		panel.add(btBuscar);
		panel.add(btSalvar);
		
		
		
		configuraLayout(layout);
		
		
		return panel;
		
		
	}
	
	
	private void configuraLayout(SpringLayout layout){
		
		 // Ajusta LABEL
        layout.putConstraint(
        		SpringLayout.WEST, label,
                5,
                SpringLayout.WEST, panel);
        layout.putConstraint(
        		SpringLayout.NORTH, label,
                5,
                SpringLayout.NORTH, panel);
        
        // Ajusta COMBO
        layout.putConstraint(
        		SpringLayout.WEST, cbTurmas,
                5,
                SpringLayout.EAST, label);
        layout.putConstraint(
        		SpringLayout.EAST, cbTurmas,
                -5,
                SpringLayout.WEST, btBuscar);
        layout.putConstraint(SpringLayout.NORTH, cbTurmas,
                5,
                SpringLayout.NORTH, panel);

        // Ajusta BUTTON BUSCAR
        layout.putConstraint(
        		SpringLayout.EAST, btBuscar,
                -5,
                SpringLayout.WEST, btSalvar);
        layout.putConstraint(SpringLayout.NORTH, btBuscar,
                5,
                SpringLayout.NORTH, panel);
        
        // Ajusta BUTTON SALVAR
        layout.putConstraint(
        		SpringLayout.EAST, btSalvar,
                -5,
                SpringLayout.EAST, panel);
        layout.putConstraint(SpringLayout.NORTH, btSalvar,
                5,
                SpringLayout.NORTH, panel);

//         Ajusta TABLE
        layout.putConstraint(
        		SpringLayout.WEST, scroll,
                5,
                SpringLayout.WEST, panel);
        layout.putConstraint(SpringLayout.NORTH, scroll,
                2,
                SpringLayout.SOUTH, btSalvar);
       
        // Ajusta TELA
        layout.putConstraint(
        		SpringLayout.EAST, panel,
                5,
                SpringLayout.EAST, scroll);
        layout.putConstraint(SpringLayout.SOUTH, panel,
                5,
                SpringLayout.SOUTH, scroll);
		
	}
	
	
	public void salvarConceitos(){
		
		int rows = table.getRowCount();
		
		for (int i = 0; i < rows; i++) {
			
			String[] conceitos = new String[5];
			boolean conceitoErro = false;
			
			int matriculaAluno = (Integer) table.getValueAt(i, 0);
			for (int j = 0; j < conceitos.length; j++) {
				
				conceitos[j] = (String) table.getValueAt(i, j+2);
				
				if(conceitos[j].length() < 1)
					conceitos[j] = "-";
				
				if(!conceitos[j].matches("[A-Da-d\\-]"))
					conceitoErro = true;
				
			}
			
			
			if(conceitoErro){
				
				JOptionPane.showMessageDialog(null, "Os conceitos devem ter apenas um caracter sendo de A até D.\n" +
													"NÃO foi possível SALVAR os conceitos do aluno\n" +
													(String) table.getValueAt(i, 1));
				
				continue;
			}
				
			
			if(turmaRepo.alterarConceitos(matriculaAluno, 
									   turmaSelec.getCdTurma(), 
									   conceitos[0], 
									   conceitos[1], 
									   conceitos[2], 
									   conceitos[3] , 
									   conceitos[4])){
				System.out.println("CONCEITO do Aluno SALVO com SUCESSO!");
			}
			else
				System.err.println("NAO FOI SALVO CONCEITO do Aluno!");
			
		}
		
		JOptionPane.showMessageDialog(null, "Concluído");		
		
		
		
	}
	
	
}
